/* eslint-disable no-param-reassign */
const path = require('path')
    // const feJdwlLocalGet = require('./node-service/jdwl-local-get/index.js');
process.env.VUE_APP_FEBUILDTIME = new Date().getTime();
process.env.VUE_APP_FEBUILDTIMEX = new Date();
const webpack = require('webpack')
const CompressionPlugin = require('compression-webpack-plugin')
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer') // 文件可视化展示的插件
const resolve = dir => path.join(__dirname, dir)
const BASE_URL = process.env.VUE_APP_BASE_API
const port = process.env.port || process.env.npm_config_port || 9528 // dev port
    // var mapData = require('./src/utils/data.json') //本地json文件数据
    // eslint-disable-next-line @typescript-eslint/no-var-requires
const HtmlWebpackPlugin = require('html-webpack-plugin') // 构建输入输出文件名字
module.exports = {
    // 基本路径
    publicPath: './',
    // 输出文件目录
    outputDir: '../dist/deptScreenUI',
    // eslint-loader 是否在保存的时候检查
    lintOnSave: false,
    runtimeCompiler: true, // 关键点在这
    configureWebpack: {
        output: { // 输出重构  打包编译后的 文件名称  【模块名称.hash值】
            filename: 'dept/assets/js/[name].[hash].js',
            chunkFilename: 'dept/assets/js/[name].[hash].js'
        },
        // plugins: [], // plugins 数组是 webpack 打包期间会用到的一些插件列表
        devtool: 'source-map',
        plugins: [
            new webpack.ProvidePlugin({
                $: "jquery",

                jQuery: "jquery",
                "windows.jQuery": "jquery"
            })
        ]
    },
    // 调整内部的 webpack 配置。
    chainWebpack: (config) => {
        // 设置快捷路径
        config.resolve.alias
            .set('@', resolve('src'))
            .set('assets', resolve('src/assets'))
            .set('components', resolve('src/components'))
            .set('public', resolve('public'))
            // 加载svg
        config.module
            .rule('svg')
            .exclude.add(resolve('src/icons'))
            .end()

        config.module
            .rule('svg-sprite-loader')
            .test(/\.svg$/)
            .include.add(resolve('src/icons'))
            .end()
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .options({
                symbolId: 'icon-[name]'
            })
            // 解决ie11兼容ES6
            // config.entry('main').add('babel-polyfill')
            // gzip 压缩
        config
        // 页面模块分析性能
            .plugin('compressionPlugin')
            .use(CompressionPlugin)
            .tap(() => [{
                test: /\.js$|\.html$|\.css/, // 匹配文件名
                threshold: 10240, // 超过10k进行压缩
                deleteOriginalAssets: false // 是否删除源文件
            }])
        config
        // 页面模块分析展示
            .plugin('BundleAnalyzerPlugin')
            .use(BundleAnalyzerPlugin)
        config
        // 更改webpack内部配置  修改打包之后的文件名称
            .plugin('html')
            .tap(args => {
                if (process.env.NODE_ENV === 'development') return args
                args[0].title = '京东物流-供应链优化产品组-研发排期';
                // args[0].filename = 'deptScreenUI.html';
                return args
            })
    },
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false,
    // css相关配置
    css: {
        // 是否使用css分离插件 ExtractTextPlugin
        extract: false,
        // 开启 CSS source maps?
        sourceMap: false,
        // css预设器配置项
        loaderOptions: {
            // sass: {
            //     prependData: '@import "@/styles/mixins.scss";'
            // }
        },
        // 启用 CSS modules for all css / pre-processor files.
        requireModuleExtension: true
    },
    // webpack-dev-server 相关配置
    devServer: {
        /* 自动打开浏览器 */
        // open: process.platform === 'darwin',
        open: true,
        // host: '127.0.0.1',
        // allowedHosts: [
        //     '.jd.com',
        //     '.jdwl.com',
        //     '.jdl.cn'
        // ],
        // port: 8080,
        // https: false,
        // hotOnly: false,
        // /* 使用代理 */
        // proxy: {
        //     '/api': {
        //         /* 目标代理服务器地址 */
        //         target: 'http://192.168.137.129:8080',
        //         /* 允许跨域 */
        //         changeOrigin: true,
        //         ws: true,
        //         pathRewrite: {
        //             '^/api': '/'
        //         }
        //     }
        // },
        before: (app) => {
            // feJdwlLocalGet(app);
        }
    },
    // 第三方插件配置
    pluginOptions: {}
}